package ru.stepuk.modern.gui;

import ru.stepuk.modern.Controller;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.control.EditingModalGraphMouse;
import edu.uci.ics.jung.visualization.control.ModalGraphMouse.Mode;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import ru.stepuk.modern.Path;
import ru.stepuk.modern.nodes.Node;

/**
 *
 * @author ivan
 */
public class MainFrame extends javax.swing.JFrame {

    private Controller controller;
    private VisualizationViewer<Node, Path> visualizer;

    /** Creates new form MainFrame */
    public MainFrame(Controller c, VisualizationViewer v) {
        this.controller = c;
        this.visualizer = v;
        initComponents();
        visualisationPanel.add(visualizer);
        visualizer.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseReleased(MouseEvent evt) {
                if (controller.isAutoAlign()) {
                    controller.alignNodes(visualizer);
                }
            }
        });
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        nodeButtonGroup = new javax.swing.ButtonGroup();
        visualisationPanel = new javax.swing.JPanel();
        mainToolBar = new javax.swing.JToolBar();
        jSeparator3 = new javax.swing.JToolBar.Separator();
        newModelButton = new javax.swing.JButton();
        openModelButton = new javax.swing.JButton();
        saveModelButton = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        navigateButton = new javax.swing.JToggleButton();
        pickButton = new javax.swing.JToggleButton();
        jSeparator1 = new javax.swing.JToolBar.Separator();
        alignButton = new javax.swing.JButton();
        zoomInButton = new javax.swing.JButton();
        zoomOutButton = new javax.swing.JButton();
        jSeparator4 = new javax.swing.JToolBar.Separator();
        jButton1 = new javax.swing.JButton();
        jScrollPane = new javax.swing.JScrollPane();
        nodesPanel = new javax.swing.JPanel();
        sourceExpButton = new javax.swing.JToggleButton();
        serverSimpleButton = new javax.swing.JToggleButton();
        bufferQueueButton = new javax.swing.JToggleButton();
        bufferStackButton = new javax.swing.JToggleButton();
        bufferPriorButton = new javax.swing.JToggleButton();
        bufferRandomButton = new javax.swing.JToggleButton();
        sourceConstButton = new javax.swing.JToggleButton();
        sourceDiscreteButton = new javax.swing.JToggleButton();
        sourceUniformButton = new javax.swing.JToggleButton();
        sourceErlangButton = new javax.swing.JToggleButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        serverPriorButton = new javax.swing.JToggleButton();
        serverQuantumButton = new javax.swing.JToggleButton();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        miscExitButton = new javax.swing.JToggleButton();
        miscAnchorButton = new javax.swing.JToggleButton();
        miscPriorButton = new javax.swing.JToggleButton();
        jLabel5 = new javax.swing.JLabel();
        condRandomButton = new javax.swing.JToggleButton();
        condServedButton = new javax.swing.JToggleButton();
        condServerButton = new javax.swing.JToggleButton();
        jMenuBar = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("ModErn");
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        setLocationByPlatform(true);

        visualisationPanel.setBackground(new java.awt.Color(64, 64, 64));

        javax.swing.GroupLayout visualisationPanelLayout = new javax.swing.GroupLayout(visualisationPanel);
        visualisationPanel.setLayout(visualisationPanelLayout);
        visualisationPanelLayout.setHorizontalGroup(
            visualisationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 490, Short.MAX_VALUE)
        );
        visualisationPanelLayout.setVerticalGroup(
            visualisationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 459, Short.MAX_VALUE)
        );

        mainToolBar.setFloatable(false);
        mainToolBar.setRollover(true);
        mainToolBar.add(jSeparator3);

        newModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/document.png"))); // NOI18N
        newModelButton.setFocusable(false);
        newModelButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        newModelButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        newModelButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                newModelButtonActionPerformed(evt);
            }
        });
        mainToolBar.add(newModelButton);

        openModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/folder-horizontal-open.png"))); // NOI18N
        openModelButton.setFocusable(false);
        openModelButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        openModelButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        mainToolBar.add(openModelButton);

        saveModelButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/disk-black.png"))); // NOI18N
        saveModelButton.setFocusable(false);
        saveModelButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        saveModelButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        mainToolBar.add(saveModelButton);
        mainToolBar.add(jSeparator2);

        nodeButtonGroup.add(navigateButton);
        navigateButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/navigate.png"))); // NOI18N
        navigateButton.setSelected(true);
        navigateButton.setFocusable(false);
        navigateButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        navigateButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        navigateButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                navigateButtonActionPerformed(evt);
            }
        });
        mainToolBar.add(navigateButton);

        nodeButtonGroup.add(pickButton);
        pickButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/hand_pointer.png"))); // NOI18N
        pickButton.setFocusable(false);
        pickButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        pickButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        pickButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pickButtonActionPerformed(evt);
            }
        });
        mainToolBar.add(pickButton);
        mainToolBar.add(jSeparator1);

        alignButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ruler.png"))); // NOI18N
        alignButton.setFocusable(false);
        alignButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        alignButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        alignButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                alignButtonActionPerformed(evt);
            }
        });
        mainToolBar.add(alignButton);

        zoomInButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/magnifier-zoom-in.png"))); // NOI18N
        zoomInButton.setFocusable(false);
        zoomInButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        zoomInButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        zoomInButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                zoomInButtonActionPerformed(evt);
            }
        });
        mainToolBar.add(zoomInButton);

        zoomOutButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/magnifier-zoom-out.png"))); // NOI18N
        zoomOutButton.setFocusable(false);
        zoomOutButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        zoomOutButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        zoomOutButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                zoomOutButtonActionPerformed(evt);
            }
        });
        mainToolBar.add(zoomOutButton);
        mainToolBar.add(jSeparator4);

        jButton1.setText("Start simulation");
        jButton1.setFocusable(false);
        jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        mainToolBar.add(jButton1);

        jScrollPane.setBackground(new java.awt.Color(255, 255, 255));

        nodesPanel.setBackground(new java.awt.Color(255, 255, 255));

        nodeButtonGroup.add(sourceExpButton);
        sourceExpButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_exp_s.png"))); // NOI18N
        sourceExpButton.setText("Марковский источник");
        sourceExpButton.setContentAreaFilled(false);
        sourceExpButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        sourceExpButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        sourceExpButton.setIconTextGap(8);
        sourceExpButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_exp.png"))); // NOI18N
        sourceExpButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_exp.png"))); // NOI18N
        sourceExpButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sourceExpButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(serverSimpleButton);
        serverSimpleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_norm_s.png"))); // NOI18N
        serverSimpleButton.setText("Простое устройство");
        serverSimpleButton.setContentAreaFilled(false);
        serverSimpleButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        serverSimpleButton.setIconTextGap(8);
        serverSimpleButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_norm.png"))); // NOI18N
        serverSimpleButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_norm.png"))); // NOI18N
        serverSimpleButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                serverSimpleButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(bufferQueueButton);
        bufferQueueButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_queue_s.png"))); // NOI18N
        bufferQueueButton.setText("Очередь");
        bufferQueueButton.setContentAreaFilled(false);
        bufferQueueButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        bufferQueueButton.setIconTextGap(8);
        bufferQueueButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_queue.png"))); // NOI18N
        bufferQueueButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_queue.png"))); // NOI18N
        bufferQueueButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bufferQueueButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(bufferStackButton);
        bufferStackButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_stack_s.png"))); // NOI18N
        bufferStackButton.setText("Стек");
        bufferStackButton.setContentAreaFilled(false);
        bufferStackButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        bufferStackButton.setIconTextGap(8);
        bufferStackButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_stack.png"))); // NOI18N
        bufferStackButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_stack.png"))); // NOI18N
        bufferStackButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bufferStackButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(bufferPriorButton);
        bufferPriorButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_prior_s.png"))); // NOI18N
        bufferPriorButton.setText("Очередь с приоритетом");
        bufferPriorButton.setContentAreaFilled(false);
        bufferPriorButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        bufferPriorButton.setIconTextGap(8);
        bufferPriorButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_prior.png"))); // NOI18N
        bufferPriorButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_prior.png"))); // NOI18N
        bufferPriorButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bufferPriorButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(bufferRandomButton);
        bufferRandomButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_random_s.png"))); // NOI18N
        bufferRandomButton.setText("Накопитель со случайным выбором");
        bufferRandomButton.setContentAreaFilled(false);
        bufferRandomButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        bufferRandomButton.setIconTextGap(8);
        bufferRandomButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_random.png"))); // NOI18N
        bufferRandomButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/b_random.png"))); // NOI18N
        bufferRandomButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bufferRandomButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(sourceConstButton);
        sourceConstButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_const_s.png"))); // NOI18N
        sourceConstButton.setText("Постоянный источник");
        sourceConstButton.setContentAreaFilled(false);
        sourceConstButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        sourceConstButton.setIconTextGap(8);
        sourceConstButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_const.png"))); // NOI18N
        sourceConstButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_const.png"))); // NOI18N
        sourceConstButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sourceConstButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(sourceDiscreteButton);
        sourceDiscreteButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_discrete_s.png"))); // NOI18N
        sourceDiscreteButton.setText("Дискретный источник");
        sourceDiscreteButton.setContentAreaFilled(false);
        sourceDiscreteButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        sourceDiscreteButton.setIconTextGap(8);
        sourceDiscreteButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_discrete.png"))); // NOI18N
        sourceDiscreteButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_discrete.png"))); // NOI18N
        sourceDiscreteButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sourceDiscreteButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(sourceUniformButton);
        sourceUniformButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_uniform_s.png"))); // NOI18N
        sourceUniformButton.setText("Равномерный источник");
        sourceUniformButton.setContentAreaFilled(false);
        sourceUniformButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        sourceUniformButton.setIconTextGap(8);
        sourceUniformButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_uniform.png"))); // NOI18N
        sourceUniformButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_uniform.png"))); // NOI18N
        sourceUniformButton.setVerifyInputWhenFocusTarget(false);
        sourceUniformButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sourceUniformButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(sourceErlangButton);
        sourceErlangButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_erlang_s.png"))); // NOI18N
        sourceErlangButton.setText("Эрлангов источник");
        sourceErlangButton.setContentAreaFilled(false);
        sourceErlangButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        sourceErlangButton.setIconTextGap(8);
        sourceErlangButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_erlang.png"))); // NOI18N
        sourceErlangButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/s_erlang.png"))); // NOI18N
        sourceErlangButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sourceErlangButtonActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel1.setText("Источники требований");

        jLabel2.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel2.setText("Обслуживающие устройства");

        nodeButtonGroup.add(serverPriorButton);
        serverPriorButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_prior_s.png"))); // NOI18N
        serverPriorButton.setText("Прерываемое устройство");
        serverPriorButton.setContentAreaFilled(false);
        serverPriorButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        serverPriorButton.setIconTextGap(8);
        serverPriorButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_prior.png"))); // NOI18N
        serverPriorButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_prior.png"))); // NOI18N
        serverPriorButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                serverPriorButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(serverQuantumButton);
        serverQuantumButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_quantum_s.png"))); // NOI18N
        serverQuantumButton.setText("Устройство с квантом времени");
        serverQuantumButton.setContentAreaFilled(false);
        serverQuantumButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        serverQuantumButton.setIconTextGap(8);
        serverQuantumButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_quantum.png"))); // NOI18N
        serverQuantumButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/d_quantum.png"))); // NOI18N
        serverQuantumButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                serverQuantumButtonActionPerformed(evt);
            }
        });

        jLabel3.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel3.setText("Накопители");

        jLabel4.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel4.setText("Остальное");

        nodeButtonGroup.add(miscExitButton);
        miscExitButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_end_s.png"))); // NOI18N
        miscExitButton.setText("Выход из системы");
        miscExitButton.setContentAreaFilled(false);
        miscExitButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        miscExitButton.setIconTextGap(8);
        miscExitButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_end.png"))); // NOI18N
        miscExitButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_end.png"))); // NOI18N
        miscExitButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                miscExitButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(miscAnchorButton);
        miscAnchorButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_anchor_s.png"))); // NOI18N
        miscAnchorButton.setText("Пустой узел");
        miscAnchorButton.setContentAreaFilled(false);
        miscAnchorButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        miscAnchorButton.setIconTextGap(8);
        miscAnchorButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_anchor.png"))); // NOI18N
        miscAnchorButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_anchor.png"))); // NOI18N
        miscAnchorButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                miscAnchorButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(miscPriorButton);
        miscPriorButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_prior_s.png"))); // NOI18N
        miscPriorButton.setText("Установщик приоритета");
        miscPriorButton.setContentAreaFilled(false);
        miscPriorButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        miscPriorButton.setIconTextGap(8);
        miscPriorButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_prior.png"))); // NOI18N
        miscPriorButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/o_prior.png"))); // NOI18N
        miscPriorButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                miscPriorButtonActionPerformed(evt);
            }
        });

        jLabel5.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel5.setText("Ветвления");

        nodeButtonGroup.add(condRandomButton);
        condRandomButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_random_s.png"))); // NOI18N
        condRandomButton.setText("Случайный переход");
        condRandomButton.setContentAreaFilled(false);
        condRandomButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        condRandomButton.setIconTextGap(8);
        condRandomButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_random.png"))); // NOI18N
        condRandomButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_random.png"))); // NOI18N
        condRandomButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                condRandomButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(condServedButton);
        condServedButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_served_s.png"))); // NOI18N
        condServedButton.setText("Фильтр требований");
        condServedButton.setContentAreaFilled(false);
        condServedButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        condServedButton.setIconTextGap(8);
        condServedButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_served.png"))); // NOI18N
        condServedButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_served.png"))); // NOI18N
        condServedButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                condServedButtonActionPerformed(evt);
            }
        });

        nodeButtonGroup.add(condServerButton);
        condServerButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_dev_s.png"))); // NOI18N
        condServerButton.setText("Выбор устройства");
        condServerButton.setContentAreaFilled(false);
        condServerButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        condServerButton.setIconTextGap(8);
        condServerButton.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_dev.png"))); // NOI18N
        condServerButton.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/images/c_dev.png"))); // NOI18N
        condServerButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                condServerButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout nodesPanelLayout = new javax.swing.GroupLayout(nodesPanel);
        nodesPanel.setLayout(nodesPanelLayout);
        nodesPanelLayout.setHorizontalGroup(
            nodesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(nodesPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(nodesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(nodesPanelLayout.createSequentialGroup()
                        .addComponent(jLabel4)
                        .addContainerGap(226, Short.MAX_VALUE))
                    .addGroup(nodesPanelLayout.createSequentialGroup()
                        .addComponent(miscAnchorButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGap(155, 155, 155))
                    .addGroup(nodesPanelLayout.createSequentialGroup()
                        .addGroup(nodesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(condServedButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(condRandomButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(condServerButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(sourceDiscreteButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(sourceConstButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(sourceUniformButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(sourceExpButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(sourceErlangButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(serverSimpleButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(serverPriorButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(serverQuantumButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(bufferRandomButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(bufferStackButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(bufferPriorButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(bufferQueueButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(miscExitButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(miscPriorButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.LEADING))
                        .addContainerGap(16, Short.MAX_VALUE))))
        );
        nodesPanelLayout.setVerticalGroup(
            nodesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(nodesPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(sourceExpButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(sourceUniformButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(sourceConstButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(sourceDiscreteButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(sourceErlangButton)
                .addGap(18, 18, 18)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(serverSimpleButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(serverPriorButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(serverQuantumButton)
                .addGap(18, 18, 18)
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bufferQueueButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bufferPriorButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bufferStackButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bufferRandomButton)
                .addGap(18, 18, 18)
                .addComponent(jLabel5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(condServerButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(condRandomButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(condServedButton)
                .addGap(18, 18, 18)
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(miscAnchorButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(miscPriorButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(miscExitButton)
                .addContainerGap())
        );

        jScrollPane.setViewportView(nodesPanel);

        jMenu1.setText("File");
        jMenuBar.add(jMenu1);

        jMenu2.setText("Edit");
        jMenuBar.add(jMenu2);

        setJMenuBar(jMenuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(visualisationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 317, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addComponent(mainToolBar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 825, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(mainToolBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE)
                    .addComponent(visualisationPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void sourceExpButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sourceExpButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SOURCE_EXPONENTIAL);
    }//GEN-LAST:event_sourceExpButtonActionPerformed

    private void sourceUniformButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sourceUniformButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SOURCE_UNIFORM);
    }//GEN-LAST:event_sourceUniformButtonActionPerformed

    private void sourceConstButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sourceConstButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SOURCE_CONSTANT);
    }//GEN-LAST:event_sourceConstButtonActionPerformed

    private void sourceDiscreteButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sourceDiscreteButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SOURCE_DISCRETE);
    }//GEN-LAST:event_sourceDiscreteButtonActionPerformed

    private void sourceErlangButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sourceErlangButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SOURCE_ERLANG);
    }//GEN-LAST:event_sourceErlangButtonActionPerformed

    private void serverSimpleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverSimpleButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SERVER_SIMPLE);
    }//GEN-LAST:event_serverSimpleButtonActionPerformed

    private void serverPriorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverPriorButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SERVER_PRIORITY);
    }//GEN-LAST:event_serverPriorButtonActionPerformed

    private void serverQuantumButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverQuantumButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.SERVER_QUANTUM);
    }//GEN-LAST:event_serverQuantumButtonActionPerformed

    private void bufferQueueButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bufferQueueButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.BUFFER_QUEUE);
    }//GEN-LAST:event_bufferQueueButtonActionPerformed

    private void bufferPriorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bufferPriorButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.BUFFER_PRIORITY);
    }//GEN-LAST:event_bufferPriorButtonActionPerformed

    private void bufferStackButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bufferStackButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.BUFFER_STACK);
    }//GEN-LAST:event_bufferStackButtonActionPerformed

    private void bufferRandomButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bufferRandomButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.BUFFER_RANDOM);
    }//GEN-LAST:event_bufferRandomButtonActionPerformed

    private void navigateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_navigateButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.TRANSFORMING);
    }//GEN-LAST:event_navigateButtonActionPerformed

    private void miscExitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_miscExitButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.MISC_EXIT);
    }//GEN-LAST:event_miscExitButtonActionPerformed

    private void miscAnchorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_miscAnchorButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.MISC_ANCHOR);
    }//GEN-LAST:event_miscAnchorButtonActionPerformed

    private void alignButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_alignButtonActionPerformed
        controller.alignNodes(visualizer);
    }//GEN-LAST:event_alignButtonActionPerformed

    private void pickButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pickButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.PICKING);
    }//GEN-LAST:event_pickButtonActionPerformed

    private void zoomInButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zoomInButtonActionPerformed
        controller.zoomIn(visualizer);
    }//GEN-LAST:event_zoomInButtonActionPerformed

    private void zoomOutButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zoomOutButtonActionPerformed
        controller.zoomOut(visualizer);
    }//GEN-LAST:event_zoomOutButtonActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        controller.startSimulation(0);
    }//GEN-LAST:event_jButton1ActionPerformed

    private void miscPriorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_miscPriorButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.MISC_PRIOR);
    }//GEN-LAST:event_miscPriorButtonActionPerformed

    private void condRandomButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_condRandomButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.COND_RANDOM);
    }//GEN-LAST:event_condRandomButtonActionPerformed

    private void condServedButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_condServedButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.COND_SERVED);
    }//GEN-LAST:event_condServedButtonActionPerformed

    private void condServerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_condServerButtonActionPerformed
        ((EditingModalGraphMouse) visualizer.getGraphMouse()).setMode(Mode.EDITING);
        controller.setNodeToPlace(Node.NodeType.COND_SERVERS);
    }//GEN-LAST:event_condServerButtonActionPerformed

    private void newModelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newModelButtonActionPerformed
        controller.newModel(visualizer);
    }//GEN-LAST:event_newModelButtonActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton alignButton;
    private javax.swing.JToggleButton bufferPriorButton;
    private javax.swing.JToggleButton bufferQueueButton;
    private javax.swing.JToggleButton bufferRandomButton;
    private javax.swing.JToggleButton bufferStackButton;
    private javax.swing.JToggleButton condRandomButton;
    private javax.swing.JToggleButton condServedButton;
    private javax.swing.JToggleButton condServerButton;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar;
    private javax.swing.JScrollPane jScrollPane;
    private javax.swing.JToolBar.Separator jSeparator1;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator3;
    private javax.swing.JToolBar.Separator jSeparator4;
    private javax.swing.JToolBar mainToolBar;
    private javax.swing.JToggleButton miscAnchorButton;
    private javax.swing.JToggleButton miscExitButton;
    private javax.swing.JToggleButton miscPriorButton;
    private javax.swing.JToggleButton navigateButton;
    private javax.swing.JButton newModelButton;
    private javax.swing.ButtonGroup nodeButtonGroup;
    private javax.swing.JPanel nodesPanel;
    private javax.swing.JButton openModelButton;
    private javax.swing.JToggleButton pickButton;
    private javax.swing.JButton saveModelButton;
    private javax.swing.JToggleButton serverPriorButton;
    private javax.swing.JToggleButton serverQuantumButton;
    private javax.swing.JToggleButton serverSimpleButton;
    private javax.swing.JToggleButton sourceConstButton;
    private javax.swing.JToggleButton sourceDiscreteButton;
    private javax.swing.JToggleButton sourceErlangButton;
    private javax.swing.JToggleButton sourceExpButton;
    private javax.swing.JToggleButton sourceUniformButton;
    private javax.swing.JPanel visualisationPanel;
    private javax.swing.JButton zoomInButton;
    private javax.swing.JButton zoomOutButton;
    // End of variables declaration//GEN-END:variables
}
